package com.cmcc.aregister.cs.http;

import android.os.Handler;

import com.cmcc.aregister.cs.util.MyLogger;

/**
 * 
 * @author swq
 * 
 */
public abstract class BaseTask {
	protected MyLogger logger = MyLogger.getLogger();

	protected Handler _uiHandler = null;

	// 请求类型
	public final static int GET = 0;
	public final static int POST = 1;

	// http请求状态类型
	public final static int TASK_NOTIFY_RETURN_DATA = 1; // 返回数据

	public final static int TASK_NOTIFY_CONNECTION_FAIL = TASK_NOTIFY_RETURN_DATA + 1;// 网络连接不可用

	public final static int TASK_NOTIFY_NO_SIM = TASK_NOTIFY_CONNECTION_FAIL + 1;// 没有SIM卡

	public final static int TASK_NOTIFY_AIRPLANE_MODE = TASK_NOTIFY_NO_SIM + 1;// 飞行模式

	public final static int TASK_NOTIFY_DATA_ERROR = TASK_NOTIFY_AIRPLANE_MODE + 1;// 数据错误

	public final static int TASK_NOTIFY_PROGRESS = TASK_NOTIFY_DATA_ERROR + 1;// 进度

	public final static int TASK_NOTIFY_CACHE_UPDATED_SUCCESS = TASK_NOTIFY_PROGRESS + 1;// 更新缓存成功

	public final static int TASK_NOTIFY_NO_CACHE = TASK_NOTIFY_CACHE_UPDATED_SUCCESS + 1;// 没有缓存

	public final static int TASK_NOTIFY_SAVE_CACHE_FAIL = TASK_NOTIFY_NO_CACHE + 1;// 保存缓存出错

	/**
	 * 设置_uiHandler
	 */
	public void setUIHandler(Handler handler) {
		this._uiHandler = handler;
	}

	/**
	 * 通知UI任务的状态
	 * 
	 * @param what
	 */
	public abstract void notifyUIStatus(int what);

	/**
	 * 通知UI任务的状态以及数据对象
	 * 
	 * @param what
	 * @param obj
	 */
	public abstract void notifyUIObject(int what, Object obj);

	/**
	 * 返回数据给UI
	 * 
	 * @param result
	 */
	public abstract void onReturnData(Object result);

	/**
	 * 保存数据并返回数据给UI
	 * 
	 * @param result
	 */
	public abstract void onSaveCacheAndReturnData(Object result);

	/**
	 * 更新数据，但不返回数据给UI
	 * 
	 * @param result
	 */
	public abstract void onUpdateCache(Object result);

	/**
	 * 异常处理
	 * 
	 * @param what
	 * @param e
	 */
	public abstract void exceptionHandle(String what, Exception e);
}
